package com.css.sword.knowing.search;

import java.io.IOException;
import java.util.Properties;

import com.css.sword.knowing.search.util.SearchUtil;

/**
 * 高亮字段属性类： 高亮是通过在被匹配次前后插入html标记实现的，例如，在字符串“中国人民站起来了”中搜索中国 如果设定匹配词前后插入的高亮html标记为
 * <b></b>,则搜索后返回的结果为“<b>中国</b>人民站起来了”
 */

public class HighLightField {

    private String fieldName; // 被高亮的字段名
    private static String highlighterPreTags; // 匹配词前插入的html标记,例如<b>
    private static String highlighterPostTags; // 匹配词后插入的html标记,例如</b>
    private int fragmentSize = -1;

    private static HighLightField highLightField;

    static {
        try {
            Properties p = SearchUtil.getProperties();
            highlighterPreTags = p.getProperty("hilightPre");
            highlighterPostTags = p.getProperty("hilightPost");
        } catch (IOException e) {

         //   e.printStackTrace();
        }
    };

    /**
     * 获取高亮字段名称
     * 
     * @return 高亮字段名称
     */
    public String getFieldName() {
        return fieldName;
    }

    /**
     * 设置高亮字段名称
     * 
     * @param fieldName
     *            高亮字段名称
     */
    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    }

    /**
     * 获取高亮内容前缀值
     * 
     * @return 高亮内容前缀值
     */
    public String getHighlighterPreTags() {
        return highlighterPreTags;
    }

    /**
     * 设置高亮字段内容的前缀值。也可以在系统searchserver.properties文件中设置 hilightPre属性
     * 
     * @param highlighterPreTags
     *            高亮内容前缀值
     */
    public void setHighlighterPreTags(String highlighterPreTags) {
        this.highlighterPreTags = highlighterPreTags;
    }

    /**
     * 获取高亮内容后缀值
     * 
     * @return 高亮内容后缀值
     */
    public String getHighlighterPostTags() {
        return highlighterPostTags;
    }

    /**
     * 设置高亮字段内容的后缀值。也可以在系统searchserver.properties文件中设置 hilightPost属性
     * 
     * @param highlighterPostTags
     *            高亮内容后缀值
     */
    public void setHighlighterPostTags(String highlighterPostTags) {
        this.highlighterPostTags = highlighterPostTags;
    }

    /**
     * 获取高亮字段内容片段长度
     * 
     * @return 长度值
     */
    public int getFragmentSize() {
        return fragmentSize;
    }

    /**
     * 设置高亮字段内容的片段长度，默认值为-1，又系统决定返回长度</> 自定义值如果大于内容总长度，返回全部内容，小于内容长度时，返回内容会被截断
     * 
     * @param fragmentSize
     *            长度值
     */
    public void setFragmentSize(int fragmentSize) {
        this.fragmentSize = fragmentSize;
    }

}
